#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QtWidgets>
#include <QAction>
#include <QString>
#include <QStringList>
#include <QMenu>
#include <QMenuBar>
#include <QToolBar>
#include <QStatusBar>
#include <QToolButton>
#include <QMessageBox>
#include <QDockWidget>
#include <QTabWidget>
#include <QSqlQuery>
#include <QSqlError>
#include <QMessageBox>
#include <QDebug>
#include <QDate>
#include <QTime>
#include <QDir>
#include <QFileSystemModel>
#include <QFileDialog>
#include <QProcess>

//#include "CustomToolbar.h"

class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    explicit MainWindow(QWidget *parent = 0);
    MainWindow(QWidget *parent, QString user_, QString host_, int port_);

signals:

public slots:
    void About();

//    void OpenClientModule();
//    void OpenDomainsModule();
//    void OpenAutoAdminmodule();
//    void OpenExpirationModule();

//    void OpenMovimientosModule();
//    void OpenChequesModule();
//    void OpenCuentaCorrienteModule();
//    void OpenaGastoMensualModule();
//    void OpenCobroMensualModule();
//    void OpenPagoMensualModule();

//    void SelectExpiratedDomains2();
    void CloseAndBackup();
    void BackupDB();
    void RestoreDB();
//    void DropTables();
    void Help();

private:

//    bool clientModuleBool;
//    bool domainModuleBool;
//    bool expirationNICModuleBool;
//    bool autoAdminModuleBool;

//    int clientModuleIndex;
//    int domainModuleIndex;
//    int expirationNICModuleIndex;
//    int autoAdminModuleIndex;

    /**
     * @brief file_menu Opciones correspondientes al menu Archivo.
     */
    QMenu *archivo_menu;

    QAction *exit_action;
    QAction *backupDB_action;
    QAction *restoreDB_action;

    /**
     * @brief edit_menu Opciones correspondientes al menu Editar.
     */
    QMenu *editar_menu;

    /**
     * @brief view_menu Opciones correspondientes al menu Ver.
     */
//    QMenu *vista_menu;

    /**
     * @brief client_menu Opciones correspondientes al menu Cliente.
     */
//    QMenu *client_menu;

//    QMenu *administration_menu;

    QMenu *help_menu;

    /**
    * Barra de herramientas situada en la parte izquierda, que contiene
    * las opciones necesarias para acceder a los diferentes módulos.
    */
//    CustomToolbar *main_options_toolbar;
//    CustomToolbar *a;

//    QAction *main_client_action;
//    QAction *main_domain_action;
//    QAction *main_autoadmin_action;
//    QAction *main_expirationNIC_action;

//    QAction *main_movimientos_action;
//    QAction *main_cheques_action;
//    QAction *main_cuentaCorriente_action;
//    QAction *main_gastoMensual_action;
//    QAction *main_cobroMensual_action;
//    QAction *main_pagoMensual_action;

//    QAction *main_help_action;
    void CreateMainActions();

    //------------------------------------------------------

    QDockWidget *central_dock;

    // ------------------ Pagina web central --------------
//    QWebView *view;
//    Browser *browser;
    QTabWidget *tab;

    QStatusBar *status;

    void CreateMainMenu();
    void CreateActions();

    QString user,host;
    int port;
};

#endif // MAINWINDOW_H

